package com.poetize.plus.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.poetize.plus.entity.dto.ChangeForbiddenDTO;
import com.poetize.plus.entity.dto.RegisterDTO;
import com.poetize.plus.entity.dto.UserDTO;
import com.poetize.plus.entity.dto.UserUiDTO;
import com.poetize.plus.entity.dto.page.UserPageDTO;
import com.poetize.plus.entity.po.User;
import com.poetize.plus.entity.vo.UserPageVO;
import com.poetize.plus.entity.vo.UserVO;

/**
 * @author zuosy
 * @created 2024/3/29 9:18
 */
public interface UserService extends IService<User> {

    /**
     * 用户分页数据
     * @param userPageDTO
     * @return
     */
    Page<UserPageVO> userPage(UserPageDTO userPageDTO);

    /**
     * 修改禁用状态
     * @param changeForbiddenDTO
     * @return
     */
    Boolean changeForbidden(ChangeForbiddenDTO changeForbiddenDTO);

    /**
     * 删除用户
     * @param id
     * @return
     */
    Boolean deleteUser(Long id);

    /**
     * 用户详情
     * @param id
     * @return
     */
    UserVO queryUser(Long id);

    /**
     * 修改用户
     * @param userDTO
     * @return
     */
    Boolean updateUser(UserDTO userDTO);

    /**
     * 获取验证码
     * @param email
     * @return
     */
    Boolean sendCode(String email);

    /**
     * 注册
     * @param registerDTO
     * @return
     */
    Boolean register(RegisterDTO registerDTO);

    /**
     * 用户详情
     * @return
     */
    UserVO userInfo();

    /**
     * 修改个人信息
     * @param userUiDTO
     * @return
     */
    Boolean modified(UserUiDTO userUiDTO);
}
